本節將描述如何使用 Gii 自動產生程式碼,以實作一些常見的網站功能。使用 Gii 自動產生程式碼僅僅是在 Gii 網頁上顯示的說明中輸入正確的資訊即可。
透過本教學課程,您將學習如何
Gii 在 Yii 中作為一個 模組 提供。您可以透過在應用程式的 modules 屬性中配置 Gii 來啟用它。根據您建立應用程式的方式,您可能會在 config/web.php
配置檔案中找到以下程式碼
$config = [ ... ];
if (YII_ENV_DEV) {
$config['bootstrap'][] = 'gii';
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
];
}
上述配置說明,當處於 開發環境 時,應用程式應包含一個名為 gii
的模組,其類別為 yii\gii\Module。
如果您檢查應用程式的 入口腳本 web/index.php
,您會找到以下行,它基本上使 YII_ENV_DEV
為 true
。
defined('YII_ENV') or define('YII_ENV', 'dev');
由於該行程式碼,您的應用程式處於開發模式,並且已經根據上述配置啟用了 Gii。您現在可以透過以下 URL 存取 Gii
https://hostname/index.php?r=gii
注意:如果您從 localhost 以外的機器存取 Gii,預設情況下會基於安全目的拒絕存取。您可以配置 Gii 以新增允許的 IP 位址,如下所示:
'gii' => [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs ],
若要使用 Gii 產生 Active Record 類別,請選取「模型產生器」(按一下 Gii 索引頁面上的連結)。然後填寫表單如下
country
Country
接下來,按一下「預覽」按鈕。您將看到 models/Country.php
列在要建立的結果類別檔案中。您可以按一下類別檔案的名稱以預覽其內容。
使用 Gii 時,如果您已經建立相同的檔案並且將要覆寫它,請按一下檔案名稱旁邊的 diff
按鈕,以查看要產生的程式碼與現有版本之間的差異。
當覆寫現有檔案時,請勾選「覆寫」旁邊的方框,然後按一下「產生」按鈕。如果建立新檔案,您可以直接按一下「產生」。
接下來,您將看到一個確認頁面,指示程式碼已成功產生。如果您有現有檔案,您也會看到一則訊息,指示該檔案已使用新產生的程式碼覆寫。
CRUD 代表 Create(建立)、Read(讀取)、Update(更新)和 Delete(刪除),表示大多數網站上針對資料採取的四個常見任務。若要使用 Gii 建立 CRUD 功能,請選取「CRUD 產生器」(按一下 Gii 索引頁面上的連結)。對於「country」範例,請填寫結果表單如下
app\models\Country
app\models\CountrySearch
app\controllers\CountryController
接下來,按一下「預覽」按鈕。您將看到要產生的檔案清單,如下所示。
如果您先前已建立 controllers/CountryController.php
和 views/country/index.php
檔案(在指南的資料庫章節中),請勾選「覆寫」方框以取代它們。(先前的版本沒有完整的 CRUD 支援。)
若要查看其運作方式,請使用您的瀏覽器存取以下 URL
https://hostname/index.php?r=country%2Findex
您將看到一個資料網格,顯示資料庫表格中的國家/地區。您可以排序網格,或透過在欄位標頭中輸入篩選條件來篩選網格。
對於網格中顯示的每個國家/地區,您可以選擇檢視其詳細資訊、更新它或刪除它。您也可以按一下網格頂端的「建立國家/地區」按鈕,以取得用於建立新國家/地區的表單。
以下是 Gii 產生的檔案清單,如果您想研究這些功能是如何實作的,或自訂它們
controllers/CountryController.php
models/Country.php
和 models/CountrySearch.php
views/country/*.php
資訊:Gii 旨在成為高度可自訂和可擴充的程式碼產生工具。明智地使用它可以大大加快您的應用程式開發速度。如需更多詳細資訊,請參閱 Gii 章節。
在本節中,您已學習如何使用 Gii 產生程式碼,以實作儲存在資料庫表格中內容的完整 CRUD 功能。
發現錯字或您認為此頁面需要改進?
在 github 上編輯 !
這些說明沒有告訴您需要編輯 models\Country.php 以新增
以便在您完成先前的 Gii 範例後使其正常運作。
如果您在 docker 容器中執行 Yii,您必須允許主機 IP,而不是 127.0.0.1。起初可能不太明顯。
閱讀更多: https://github.com/yiisoft/yii2-app-basic/issues/192
Hello *,CRUD 產生器範本 vendor/yiisoft/yii2-gii/src/generators/crud/default/views/index.php 在第 69 行有一個錯誤
解決方案:將 $modelClass 變更為 $generator->modelClass
Before: 'urlCreator' => function ($action, <?= $modelClass ?> ... After: 'urlCreator' => function ($action, <?= $generator->modelClass ?> ...
@jheym
不對,
在第 9 行你有
所以,它沒有錯誤。
註冊 或 登入 以發表評論。